/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package models;

/**
 *
 * @author 40800431
 */
public class Tarefa {
    
    
    private int id;
    private String nome;
    private String descricao;
    private int horasPrevistas;
    private Cronograma cronograma;

    public static String[] listAllAsArray() {
        Database db = new Database();
        String[] taskList;
        db.connect();
        
        int rowCount = 0;
                
        try {
            db.query("SELECT count(*) FROM Tarefas");
            db.res.next();
            rowCount = db.res.getInt(1);
            
            db.query("SELECT nome FROM Tarefas ORDER BY nome");
        
            taskList = new String[rowCount];
            for(int i = 0; i < rowCount; i++){
                db.res.next();
                taskList[i] = db.res.getString("nome");
            }

            db.disconnect();
            
            return taskList;
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;
    }
    
    public static String[] listByProject(String projectName){
        Database db = new Database();
        String[] taskList;
        db.connect();
        
        int rowCount = 0;
                
        try {
            db.query("SELECT count(*) FROM Tarefas " +
            "INNER JOIN Cronogramas ON Cronogramas.id_cronograma = Tarefas.cronograma " +
            "INNER JOIN Projetos ON Projetos.id_projeto = Cronogramas.projeto " +
            "WHERE Projetos.nome = '" + projectName + "';");
            
            db.res.next();
            rowCount = db.res.getInt(1);
            
            db.query("SELECT * FROM Tarefas " +
            "INNER JOIN Cronogramas ON Cronogramas.id_cronograma = Tarefas.cronograma " +
            "INNER JOIN Projetos ON Projetos.id_projeto = Cronogramas.projeto " +
            "WHERE Projetos.nome = '" + projectName + "';");
        
            taskList = new String[rowCount];
            for(int i = 0; i < rowCount; i++){
                db.res.next();
                taskList[i] = db.res.getString("nome");
            }

            db.disconnect();
            
            return taskList;
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;
    }
    
    public boolean insert(){
        String queryString = "INSERT INTO Tarefas (nome, descricao, horas_previstas, cronograma) VALUES ";
        queryString += "('" + this.getNome() + "', '" + this.getDescricao() + "', '" + this.getHorasPrevistas() + "', 0)";
        
        Database db = new Database();
        db.connect();
        int tarefaId = db.executeUpdate(queryString);
        db.disconnect();
        
        this.setId(tarefaId);
        
        return true;
    }
    
    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the horas_previstas
     */
    public int getHorasPrevistas() {
        return horasPrevistas;
    }

    /**
     * @param horas_previstas the horas_previstas to set
     */
    public void setHorasPrevistas(int horas_previstas) {
        this.horasPrevistas = horas_previstas;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the cronograma
     */
    public Cronograma getCronograma() {
        return cronograma;
    }

    /**
     * @param cronograma the cronograma to set
     */
    public void setCronograma(Cronograma cronograma) {
        this.cronograma = cronograma;
    }
    
}
